package com.hunt.dao;

import com.hunt.model.dto.*;
import com.hunt.model.entity.SysUser;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface ManagementMapper {
    
    //自定义realm的查询管理员信息并授权
    SysUser selectUserCAInfoByUserId(@Param("userName") String userName, @Param("password") String password);
    
    //新增
    Long insert(SysUser SysUser);

    //更新
    void update(SysUser SysUser);

    //通过对象进行查询
    SysUser select(SysUser SysUser);

    //通过id进行查询
    SysUser selectById(@Param("id") Long id);

    //查询全部
    List<SysUser> selectAll(@Param("page") int page, @Param("rows") int rows, @Param("order") String order, @Param("loginName") String loginName, @Param("zhName") String zhName, @Param("email") String email, @Param("phone") String phone, @Param("address") String address);

    //查询全部
    List<LoginInfo_new> selectAllAccount(@Param("sort") String sort, @Param("order") String order, @Param("userid") String userid, @Param("username") String username, @Param("moneyfrom") Integer moneyfrom, @Param("moneyto") Integer moneyto, @Param("phone") String phone, @Param("address") String address);

    //用于客服查询全部
    List<LoginInfo_new> selectAllAccountforcustomer(@Param("sort") String sort, @Param("order") String order, @Param("userid") String userid, @Param("username") String username, @Param("phone") String phone);

    //查询数量
    int selectCounts(@Param("sort") String sort, @Param("order") String order, @Param("loginName") String loginName, @Param("zhName") String zhName, @Param("email") String email, @Param("phone") String phone, @Param("address") String address);

    //查询用户数量
    int selectAccountCounts(@Param("sort") String sort, @Param("order") String order, @Param("userid") String userid, @Param("username") String username, @Param("moneyfrom") Integer moneyfrom, @Param("moneyto") Integer moneyto, @Param("phone") String phone, @Param("address") String address);

    //用于客服查询用户数量
    int selectAccountCountsforcustomer(@Param("sort") String sort, @Param("order") String order, @Param("userid") String userid, @Param("username") String username, @Param("phone") String phone);

    boolean selectByLoginName(@Param("loginName") String loginName);

    void deleteById(@Param("id") long id);

    boolean isExistLoginNameExcludeId(@Param("id") long id, @Param("loginName") String loginName);

    SysUser selectUserByLoginName(@Param("loginName") String loginName);

    LoginInfo_new_child selectUserByLoginName_new(@Param("userid") String userid);

    UserLevel selectUserLevelById(@Param("userid") String userid,@Param("userlevel") String userlevel);

    UserLevel selectUserLevel(@Param("userlevel") String userlevel);
    //查询用户是否存在
    boolean selectIsExByUserId(@Param("userid") String userid);
    //查询附表用户是否存在
    boolean selectIsExFBByUserId(@Param("userid") String userid);


    //开通新用户
    Long insertAccount(LoginInfo_new LoginInfo_new);
    Long insertAccountChannel2(LoginInfo_new LoginInfo_new);
    //更新
    void updateAccount(LoginInfo_new LoginInfo_new);
    //重置用户登录状态
    void resetAllAccountState();
    //删除用户
    void deleteAccountByUserId(@Param("userid") String  userid);
    //查询近5日机构买卖
    List<MechanismTrend> getMechanismTrwenFice5();
    //查询服务器状态
    List<ServerstateDto> getServerState();
    //取得在线用户列表
    List<LoginInfo_new> getOnlineUsers();
    //根据serverid取得服务器配置信息
    List<ServerstateDto>  getServerMessage(String serverid);
    //人数最少的服务器
    List<ServerstateDto> getFastServerMessage();

    String getKaiHuTime(@Param("userid")String userid);
    //删除角色时 切断与用户的关系
//    void deleteByRoleId(@Param("id") Long id);
    /**
     * 查询用户购买产品信息的数量
     * @param sort
     * @param order
     * @param userName
     * @param phone
     * @param accountTimeBegin
     * @param accountTimesEnd
     * @param paymentTimeBegin
     * @param paymentTimeEnd
     * @return
     */
    int selectCountsForPaymentInfo(@Param("sort")String sort,@Param("order")String order, @Param("username")String userName,
                                   @Param("phone")String phone, @Param("accountTimeBegin")String accountTimeBegin,
                                   @Param("accountTimeEnd")String accountTimesEnd, @Param("paymentTimeBegin")String paymentTimeBegin,
                                   @Param("paymentTimeEnd")String paymentTimeEnd);
    /**
     * 查询用户购买产品的信息
     * @param sort
     * @param order
     * @param userName
     * @param phone
     * @param accountTimeBegin
     * @param accountTimesEnd
     * @param paymentTimeBegin
     * @param paymentTimeEnd
     * @return
     */
    List<UserPaymentInfo> selectAllPaymentInfo(@Param("sort")String sort,@Param("order")String order, @Param("username")String userName,
                                               @Param("phone")String phone, @Param("accountTimeBegin")String accountTimeBegin,
                                               @Param("accountTimeEnd")String accountTimesEnd, @Param("paymentTimeBegin")String paymentTimeBegin,
                                               @Param("paymentTimeEnd")String paymentTimeEnd);

}